// 修饰符
// 1. 公共 public: 允许任何人访问.
// 2. 保护 protected： 允许自身和子类访问
// 3. 私有 private: 允许自身访问

// 父类 | 基类 
export class Father {
	public name: string
	protected money = 40000
	private _litterMoney = 200
	public constructor(name: string) {
		this.name = name

		console.log('父类', this.money)
		console.log(this._litterMoney)
	}
	public sayName() {
		console.log(`名字：${this.name}`)
	}
	// 比较麻烦
	public getLitterMoney() {
		return this._litterMoney
	}
	// 访问器模式
	// 定义： 像函数
	// 使用： 像属性
	get litterMoney() {
		return this._litterMoney
	}
	set litterMoney(value: number) {
		const code = Math.random().toString(36).slice(2, 6)
		console.log(code)
		const flag = window.prompt('请输入验证码')
		if(flag === code) {
			this._litterMoney = value
		} else {
			alert('验证码错误')
		}
	
	}
}
// 子类 | 派生类
export class Son extends Father {
	protected age: number
	public constructor(name: string, age: number) {
		// 父类的构造函数
		super(name);
		this.age = age;
		console.log('子类', this.money)
	}
	public sayAge() {
		console.log(`${this.age}岁了！！！`)
	}
}








